package com.zjj.algorithm.learning.niuke;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 进制准换
 * 描述
 * 写出一个程序，接受一个十六进制的数，输出该数值的十进制表示。
 * <p>
 * 数据范围：保证结果在
 * 1
 * ≤
 * �
 * ≤
 * 2
 * 31
 * −
 * 1
 * <p>
 * 1≤n≤2
 * 31
 * −1
 * 输入描述：
 * 输入一个十六进制的数值字符串。
 * <p>
 * 输出描述：
 * 输出该数值的十进制字符串。不同组的测试用例用\n隔开。
 *
 * @author zjj_admin
 * @date 2023/2/8 20:13
 */
public class Test5 {

    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("0", "0000");
        map.put("1", "0001");
        map.put("2", "0010");
        map.put("3", "0011");
        map.put("4", "0100");
        map.put("5", "0101");
        map.put("6", "0110");
        map.put("7", "0111");
        map.put("8", "1000");
        map.put("9", "1001");
        map.put("A", "1010");
        map.put("B", "1011");
        map.put("C", "1100");
        map.put("D", "1101");
        map.put("E", "1110");
        map.put("F", "1111");
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        StringBuilder sbr = new StringBuilder();
        for (int i = 2; i < str.length(); i++) {
            sbr.append(map.get(str.substring(i, i + 1)));
        }
        int res = 0;
        int len = sbr.toString().length();
        int i = len - 1;
        int j = 0;
        while (i >= 0) {
            res = (int) (res + Math.pow(2, j) * Integer.parseInt(sbr.substring(i, i + 1)));
            j++;
            i--;
        }
        System.out.println(res);

    }
}
